package core

import "gateway/config"

type Connector interface {
	NameAware
	ArgsAware
	DisposableAware
	InitializingInboundChainAware
}

type Inbound interface {
	ArgsAware
	DisposableAware
	InitializingChainAware
	Receive(msg Message) bool
	GetArgs() config.Args
}

type Handler interface {
	ArgsAware
	InitializingAware
	DisposableAware
	Handler(msg Message) bool
}

type Outbound interface {
	ArgsAware
	InitializingAware
	DisposableAware
	Send(msg Message)
}

type Chain interface {
	Dispatch(msg Message) bool
}

type InboundChain interface {
	Chain
	GetInbounds() []Inbound
}
